RRPlot and the Colon data set

Libraries

library(survival)
library(FRESA.CAD)
## Loading required package: Rcpp
## Loading required package: stringr
## Loading required package: miscTools
## Loading required package: Hmisc
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
## 
##     format.pval, units
## Loading required package: pROC
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
#library(corrplot)
#source("~/GitHub/FRESA.CAD/R/RRPlot.R")
#source("~/GitHub/FRESA.CAD/R/PoissonEventRiskCalibration.R")
op <- par(no.readonly = TRUE)
pander::panderOptions('digits', 3)
#pander::panderOptions('table.split.table', 400)
pander::panderOptions('keep.trailing.zeros',TRUE)

The data set

data(cancer)
colon <- subset(colon,etype==1)
colon$etype <- NULL
rownames(colon) <- colon$id
colon$id <- NULL
colon <- colon[complete.cases(colon),]
time <- colon$time
status <- colon$status
data <- colon
data$time <- NULL
data$study <- NULL
table(data$status)

0 1 442 446

dataColon <- as.data.frame(model.matrix(status~.*.,data))
dataColon$`(Intercept)` <- NULL
dataColon$time <- time/365
dataColon$status <- status
colnames(dataColon) <-str_replace_all(colnames(dataColon),":","_")
colnames(dataColon) <-str_replace_all(colnames(dataColon),"\\.","_")
colnames(dataColon) <-str_replace_all(colnames(dataColon),"\\+","_")
data <- NULL

trainsamples <- sample(nrow(dataColon),0.7*nrow(dataColon))
dataColonTrain <- dataColon[trainsamples,]
dataColonTest <- dataColon[-trainsamples,]


pander::pander(table(dataColonTrain$status))
0 1
298 323
pander::pander(table(dataColonTest$status))
0 1
144 123

Modeling

ml <- BSWiMS.model(Surv(time,status)~1,data=dataColonTrain,NumberofRepeats = 3)

[++++++-+++++++-+++++-].

sm <- summary(ml)
pander::pander(sm$coefficients)
Table continues below
  Estimate lower HR upper u.Accuracy
age_nodes 0.000357 1.000 1.000 1.000 0.618
differ_node4 0.061851 1.040 1.064 1.089 0.602
rxLev_5FU_age -0.001797 0.998 0.998 0.999 0.599
node4 0.246491 1.164 1.280 1.406 0.602
extent_node4 0.026209 1.016 1.027 1.037 0.602
rxLev_5FU -0.141253 0.821 0.868 0.919 0.599
rxLev_5FU_extent -0.035896 0.950 0.965 0.979 0.599
rxLev_5FU_sex -0.130516 0.830 0.878 0.928 0.583
rxLev_5FU_differ -0.059983 0.917 0.942 0.967 0.599
nodes_node4 -0.029021 0.960 0.971 0.983 0.605
age_node4 0.001352 1.001 1.001 1.002 0.602
rxLev_5FU_node4 0.024953 1.011 1.025 1.040 0.506
nodes 0.037216 1.016 1.038 1.060 0.620
nodes_extent 0.002215 1.001 1.002 1.004 0.626
differ_extent 0.030359 1.012 1.031 1.050 0.556
nodes_surg 0.002325 1.001 1.002 1.004 0.530
extent 0.064219 1.022 1.066 1.113 0.552
sex_nodes -0.015067 0.975 0.985 0.995 0.504
rxLev_obstruct 0.054747 1.017 1.056 1.097 0.506
nodes_differ 0.007726 1.002 1.008 1.013 0.618
rxLev_nodes 0.001293 1.000 1.001 1.002 0.564
Table continues below
  r.Accuracy full.Accuracy u.AUC r.AUC full.AUC
age_nodes 0.615 0.651 0.625 0.611 0.650
differ_node4 0.625 0.604 0.612 0.615 0.613
rxLev_5FU_age 0.602 0.604 0.592 0.612 0.613
node4 0.636 0.654 0.612 0.636 0.656
extent_node4 0.630 0.609 0.612 0.626 0.617
rxLev_5FU 0.612 0.649 0.592 0.618 0.653
rxLev_5FU_extent 0.601 0.649 0.592 0.609 0.652
rxLev_5FU_sex 0.609 0.624 0.569 0.616 0.630
rxLev_5FU_differ 0.609 0.648 0.592 0.613 0.647
nodes_node4 0.587 0.647 0.615 0.598 0.650
age_node4 0.641 0.649 0.612 0.640 0.652
rxLev_5FU_node4 0.602 0.604 0.522 0.612 0.613
nodes 0.627 0.658 0.626 0.633 0.660
nodes_extent 0.598 0.630 0.633 0.608 0.635
differ_extent 0.643 0.652 0.543 0.646 0.653
nodes_surg 0.586 0.601 0.539 0.590 0.602
extent 0.622 0.645 0.537 0.625 0.644
sex_nodes 0.645 0.660 0.510 0.647 0.662
rxLev_obstruct 0.605 0.620 0.523 0.615 0.628
nodes_differ 0.626 0.643 0.625 0.633 0.648
rxLev_nodes 0.582 0.601 0.575 0.585 0.602
  IDI NRI z.IDI z.NRI Delta.AUC Frequency
age_nodes 0.02949 0.4113 6.03 5.63 0.03876 1.000
differ_node4 0.03311 0.2309 5.25 3.22 -0.00116 1.000
rxLev_5FU_age 0.03169 0.3291 5.24 4.44 0.00155 1.000
node4 0.02194 0.4099 5.17 5.43 0.01960 1.000
extent_node4 0.02131 0.4196 5.08 6.21 -0.00891 1.000
rxLev_5FU 0.02764 0.3667 4.93 4.91 0.03483 1.000
rxLev_5FU_extent 0.02525 0.3699 4.73 4.95 0.04315 1.000
rxLev_5FU_sex 0.02741 0.2758 4.60 4.83 0.01332 1.000
rxLev_5FU_differ 0.02358 0.3674 4.58 4.92 0.03388 1.000
nodes_node4 0.01945 0.3939 4.41 5.30 0.05286 1.000
age_node4 0.00956 0.3836 3.48 5.79 0.01133 1.000
rxLev_5FU_node4 0.00256 0.1000 3.48 1.26 0.00155 1.000
nodes 0.00922 0.3167 3.32 4.05 0.02763 1.000
nodes_extent 0.00695 0.2612 3.25 3.41 0.02664 1.000
differ_extent 0.01486 0.3378 3.20 4.30 0.00744 1.000
nodes_surg 0.00801 0.1529 3.05 2.16 0.01199 1.000
extent 0.01224 0.1378 2.99 2.52 0.01831 1.000
sex_nodes 0.00627 0.2258 2.97 2.86 0.01497 1.000
rxLev_obstruct 0.00930 0.1238 2.83 3.04 0.01237 0.333
nodes_differ 0.00540 0.2651 2.63 3.40 0.01499 1.000
rxLev_nodes 0.00516 0.0725 2.61 1.04 0.01693 1.000

Cox Model Performance

Here we evaluate the model using the RRPlot() function.

The evaluation of the raw Cox model with RRPlot()

Here we will use the predicted event probability assuming a baseline hazard for events withing 5 years

index <- predict(ml,dataColonTrain)
timeinterval <- round(2*mean(subset(dataColonTrain,status==1)$time),0)
timeinterval <- 2

h0 <- sum(dataColonTrain$status & dataColonTrain$time <= timeinterval)
h0 <- h0/sum((dataColonTrain$time > timeinterval) | (dataColonTrain$status==1))

rdata <- cbind(dataColonTrain$status,ppoisGzero(index,h0))

rrAnalysisTrain <- RRPlot(rdata,atRate=c(0.90),
                     timetoEvent=dataColonTrain$time,
                     title="Raw Train: Colon Cancer",
                     ysurvlim=c(0.00,1.0),
                     riskTimeInterval=timeinterval)

Time to event

toinclude <- rdata[,1]==1 
obstiemToEvent <- dataColonTrain[,"time"]
tmin<-min(obstiemToEvent)
sum(toinclude)

[1] 323

timetoEvent <- meanTimeToEvent(rdata[,2],timeinterval)
tmax<-max(c(obstiemToEvent,timetoEvent))
lmfit <- lm(obstiemToEvent[toinclude]~0+timetoEvent[toinclude])
sm <- summary(lmfit)
pander::pander(sm)
  Estimate Std. Error t value Pr(>|t|)
timetoEvent[toinclude] 0.598 0.0307 19.5 2.17e-56
Fitting linear model: obstiemToEvent[toinclude] ~ 0 + timetoEvent[toinclude]
Observations Residual Std. Error \(R^2\) Adjusted \(R^2\)
323 1.35 0.541 0.54
plot(timetoEvent,obstiemToEvent,
     col=1+rdata[,1],
     xlab="Expected Time",
     ylab="Observed Time",
     main="Expected vs. Observed",
     xlim=c(tmin,tmax),
     ylim=c(tmin,tmax),
     log="xy")
lines(x=c(tmin,tmax),y=lmfit$coefficients*c(tmin,tmax),lty=1,col="blue")
txt <- bquote(paste(R^2 == .(round(sm$r.squared,3))))
text(tmin+0.005*(tmax-tmin),tmax,txt,cex=0.7)
text(tmin+0.015*(tmax-tmin),tmax,sprintf("Slope=%4.3f",sm$coefficients[1]),cex=0.7)
legend("bottomright",legend=c("No Event","Event","Linear fit"),
             pch=c(1,1,-1),
             col=c(1,2,"blue"),
             lty=c(-1,-1,1)
             )

MADerror2 <- mean(abs(timetoEvent[toinclude]-obstiemToEvent[toinclude]))
pander::pander(MADerror2)

1.37

Uncalibrated Performance Report

pander::pander(t(rrAnalysisTrain$keyPoints),caption="Threshold values")
Threshold values
  @:0.9 @MAX_BACC @MAX_RR @SPE100 p(0.5)
Thr 0.420 0.332 0.189 1.66e-01 0.502
RR 1.710 1.916 4.496 1.57e+01 1.848
RR_LCI 1.495 1.621 1.971 3.54e-02 1.629
RR_UCI 1.956 2.265 10.256 6.95e+03 2.096
SEN 0.316 0.656 0.985 1.00e+00 0.276
SPE 0.899 0.671 0.121 1.01e-02 0.943
BACC 0.608 0.664 0.553 5.05e-01 0.609
NetBenefit 0.129 0.263 0.414 4.25e-01 0.116
pander::pander(t(rrAnalysisTrain$OERatio$estimate),caption="O/E Ratio")
O/E Ratio
O/E Low Upper p.value
0.676 0.604 0.754 6.74e-14
pander::pander(t(rrAnalysisTrain$OE95ci),caption="O/E Mean")
O/E Mean
mean 50% 2.5% 97.5%
1.14 1.14 1.12 1.16
pander::pander(t(rrAnalysisTrain$OAcum95ci),caption="O/Acum Mean")
O/Acum Mean
mean 50% 2.5% 97.5%
1.46 1.46 1.46 1.46
pander::pander(rrAnalysisTrain$c.index$cstatCI,caption="C. Index")
mean.C Index median lower upper
0.675 0.676 0.648 0.701
pander::pander(t(rrAnalysisTrain$ROCAnalysis$aucs),caption="ROC AUC")
ROC AUC
est lower upper
0.716 0.677 0.756
pander::pander((rrAnalysisTrain$ROCAnalysis$sensitivity),caption="Sensitivity")
Sensitivity
est lower upper
0.313 0.263 0.366
pander::pander((rrAnalysisTrain$ROCAnalysis$specificity),caption="Specificity")
Specificity
est lower upper
0.899 0.859 0.931
pander::pander(t(rrAnalysisTrain$thr_atP),caption="Probability Thresholds")
Probability Thresholds
90%
0.421
pander::pander(rrAnalysisTrain$surdif,caption="Logrank test")
Logrank test Chisq = 76.873443 on 1 degrees of freedom, p = 0.000000
  N Observed Expected (O-E)^2/E (O-E)^2/V
class=0 490 222 276.8 10.9 76.9
class=1 131 101 46.2 65.1 76.9

Cox Calibration

op <- par(no.readonly = TRUE)


calprob <- CoxRiskCalibration(ml,dataColonTrain,"status","time")

pander::pander(c(h0=calprob$h0,
                 Gain=calprob$hazardGain,
                 TimeInterval=calprob$timeInterval),
               caption="Cox Calibration Parameters")
h0 Gain TimeInterval
0.726 1.58 3.01

The RRplot() of the calibrated model

h0 <- calprob$h0
timeinterval <- calprob$timeInterval;

rdata <- cbind(dataColonTrain$status,calprob$prob)


rrAnalysisTrain <- RRPlot(rdata,atRate=c(0.90),
                     timetoEvent=dataColonTrain$time,
                     title="Calibrated Train: Colon",
                     ysurvlim=c(0.00,1.0),
                     riskTimeInterval=timeinterval)

Time to event after calibration

timetoEvent <- meanTimeToEvent(rdata[,2],timeinterval)
tmax<-max(c(obstiemToEvent,timetoEvent))
lmfit <- lm(obstiemToEvent[toinclude]~0+timetoEvent[toinclude])
sm <- summary(lmfit)
pander::pander(sm)
  Estimate Std. Error t value Pr(>|t|)
timetoEvent[toinclude] 0.693 0.0356 19.5 2.17e-56
Fitting linear model: obstiemToEvent[toinclude] ~ 0 + timetoEvent[toinclude]
Observations Residual Std. Error \(R^2\) Adjusted \(R^2\)
323 1.35 0.541 0.54
plot(timetoEvent,obstiemToEvent,
     col=1+rdata[,1],
     xlab="Expected Time",
     ylab="Observed Time",
     main="Expected vs. Observed",
     xlim=c(tmin,tmax),
     ylim=c(tmin,tmax),
     log="xy")
lines(x=c(tmin,tmax),y=lmfit$coefficients*c(tmin,tmax),lty=1,col="blue")
txt <- bquote(paste(R^2 == .(round(sm$r.squared,3))))
text(tmin+0.005*(tmax-tmin),tmax,txt,cex=0.7)
text(tmin+0.015*(tmax-tmin),tmax,sprintf("Slope=%4.3f",sm$coefficients[1]),cex=0.7)
legend("bottomright",legend=c("No Event","Event","Linear fit"),
             pch=c(1,1,-1),
             col=c(1,2,"blue"),
             lty=c(-1,-1,1)
             )

MADerror2 <- c(MADerror2,mean(abs(timetoEvent[toinclude]-obstiemToEvent[toinclude])))
pander::pander(MADerror2)

1.37 and 1.19

Calibrated Train Performance

pander::pander(t(rrAnalysisTrain$keyPoints),caption="Threshold values")
Threshold values
  @:0.9 @MAX_BACC @MAX_RR @SPE100 p(0.5)
Thr 0.6131 0.505 0.306 2.72e-01 0.500
RR 1.7098 1.916 4.496 1.57e+01 1.859
RR_LCI 1.4946 1.621 1.971 3.54e-02 1.564
RR_UCI 1.9559 2.265 10.256 6.95e+03 2.210
SEN 0.3158 0.656 0.985 1.00e+00 0.681
SPE 0.8993 0.671 0.121 1.01e-02 0.624
BACC 0.6076 0.664 0.553 5.05e-01 0.653
NetBenefit 0.0877 0.180 0.326 3.43e-01 0.174
pander::pander(t(rrAnalysisTrain$OERatio$estimate),caption="O/E Ratio")
O/E Ratio
O/E Low Upper p.value
0.584 0.522 0.651 3.84e-26
pander::pander(t(rrAnalysisTrain$OE95ci),caption="O/E Mean")
O/E Mean
mean 50% 2.5% 97.5%
0.987 0.987 0.969 1
pander::pander(t(rrAnalysisTrain$OAcum95ci),caption="O/Acum Mean")
O/Acum Mean
mean 50% 2.5% 97.5%
1.04 1.04 1.04 1.05
pander::pander(rrAnalysisTrain$c.index$cstatCI,caption="C. Index")
mean.C Index median lower upper
0.675 0.676 0.647 0.705
pander::pander(t(rrAnalysisTrain$ROCAnalysis$aucs),caption="ROC AUC")
ROC AUC
est lower upper
0.716 0.677 0.756
pander::pander((rrAnalysisTrain$ROCAnalysis$sensitivity),caption="Sensitivity")
Sensitivity
est lower upper
0.313 0.263 0.366
pander::pander((rrAnalysisTrain$ROCAnalysis$specificity),caption="Specificity")
Specificity
est lower upper
0.899 0.859 0.931
pander::pander(t(rrAnalysisTrain$thr_atP),caption="Probability Thresholds")
Probability Thresholds
90%
0.614
pander::pander(rrAnalysisTrain$surdif,caption="Logrank test")
Logrank test Chisq = 76.873443 on 1 degrees of freedom, p = 0.000000
  N Observed Expected (O-E)^2/E (O-E)^2/V
class=0 490 222 276.8 10.9 76.9
class=1 131 101 46.2 65.1 76.9

Evaluating on the test set

The calibrated h0 and timeinterval were estimated on the training set

index <- predict(ml,dataColonTest)
rdata <- cbind(dataColonTest$status,ppoisGzero(index,h0))

rrAnalysisTest <- RRPlot(rdata,atThr = rrAnalysisTrain$thr_atP,
                     timetoEvent=dataColonTest$time,
                     title="Test: Colon Cancer",
                     ysurvlim=c(0.00,1.0),
                     riskTimeInterval=timeinterval)

Test Performance

pander::pander(t(rrAnalysisTest$keyPoints),caption="Threshold values")
Threshold values
  @:0.614 @MAX_BACC @MAX_RR @SPE100 p(0.5)
Thr 0.6143 0.5082 0.315 2.93e-01 0.4999
RR 1.6190 1.5780 1.665 1.87e+01 1.4736
RR_LCI 1.2654 1.2189 0.836 4.11e-02 1.1332
RR_UCI 2.0715 2.0429 3.315 8.52e+03 1.9161
SEN 0.3333 0.5366 0.951 1.00e+00 0.5610
SPE 0.8472 0.6736 0.104 2.78e-02 0.6181
BACC 0.5903 0.6051 0.528 5.14e-01 0.5895
NetBenefit 0.0223 0.0654 0.216 2.43e-01 0.0525
pander::pander(t(rrAnalysisTest$OERatio$estimate),caption="O/E Ratio")
O/E Ratio
O/E Low Upper p.value
0.48 0.399 0.573 2.8e-20
pander::pander(t(rrAnalysisTest$OE95ci),caption="O/E Mean")
O/E Mean
mean 50% 2.5% 97.5%
0.725 0.726 0.706 0.743
pander::pander(t(rrAnalysisTest$OAcum95ci),caption="O/Acum Mean")
O/Acum Mean
mean 50% 2.5% 97.5%
0.852 0.852 0.849 0.855
pander::pander(rrAnalysisTest$c.index$cstatCI,caption="C. Index")
mean.C Index median lower upper
0.613 0.613 0.561 0.663
pander::pander(t(rrAnalysisTest$ROCAnalysis$aucs),caption="ROC AUC")
ROC AUC
est lower upper
0.612 0.544 0.68
pander::pander((rrAnalysisTest$ROCAnalysis$sensitivity),caption="Sensitivity")
Sensitivity
est lower upper
0.333 0.251 0.424
pander::pander((rrAnalysisTest$ROCAnalysis$specificity),caption="Specificity")
Specificity
est lower upper
0.847 0.778 0.902
pander::pander(t(rrAnalysisTest$thr_atP),caption="Probability Thresholds")
Probability Thresholds
90%
0.614
pander::pander(rrAnalysisTest$surdif,caption="Logrank test")
Logrank test Chisq = 25.188852 on 1 degrees of freedom, p = 0.000001
  N Observed Expected (O-E)^2/E (O-E)^2/V
class=0 204 82 102.6 4.14 25.2
class=1 63 41 20.4 20.82 25.2

Cross-Validation

Here we will cross validate the training set and evaluate also on the testing set. The h0 and the timeinterval are the ones estimated on the calibration process

rcv <- randomCV(theData=dataColonTrain,
                theOutcome = Surv(time,status)~1,
                fittingFunction=BSWiMS.model, 
                trainFraction = 0.75,
                repetitions=50,
                classSamplingType = "Pro",
                testingSet=dataColonTest
         )

.[+++++++-].[+++++-].[+++++-].[++++++++–].[+++++++++++++++]..[++++-].[+++++++++-+-]..[+++++++-+-].[++++-].[+++++++++++++].10 Tested: 858 Avg. Selected: 20.2 Min Tests: 1 Max Tests: 10 Mean Tests: 4.93007 . MAD: 0.4687263

.[+++++++-].[++++++–].[++++++++++-]..[++++++-].[+++++++++-].[++++++-].[+++++++-].[++++++++-+-].[+++++++-].[+++++++-]20 Tested: 887 Avg. Selected: 19.9 Min Tests: 1 Max Tests: 20 Mean Tests: 9.537768 . MAD: 0.467341

.[+++++++-].[++++++-].[++++++-].[++++++–+++-].[+++++++++-].[++++++++++–]..[+++++++-].[+++++++-].[++++++-].[+++++++-]30 Tested: 888 Avg. Selected: 20.33333 Min Tests: 2 Max Tests: 30 Mean Tests: 14.29054 . MAD: 0.4671782

.[++++++++++++++]..[++++++-].[++++++-].[++++++-].[+++++++++-].[+++++++-].[+++++–].[++++++-].[+++++++-].[++++++-]40 Tested: 888 Avg. Selected: 20.5 Min Tests: 3 Max Tests: 40 Mean Tests: 19.05405 . MAD: 0.4674747

.[+++++-].[++++++++++++++++]..[++++++++-].[+++++++++–].[+++++++++++-]..[++++++++-].[++++++-].[++++++-+-++-].[+-+++-].[+++++++++-]50 Tested: 888 Avg. Selected: 20.74 Min Tests: 4 Max Tests: 50 Mean Tests: 23.81757 . MAD: 0.4682315

stp <- rcv$survTestPredictions
stp <- stp[!is.na(stp[,4]),]

bbx <- boxplot(unlist(stp[,1])~rownames(stp),plot=FALSE)
times <- bbx$stats[3,]
status <- boxplot(unlist(stp[,2])~rownames(stp),plot=FALSE)$stats[3,]
prob <- ppoisGzero(boxplot(unlist(stp[,4])~rownames(stp),plot=FALSE)$stats[3,],h0)

rdatacv <- cbind(status,prob)
rownames(rdatacv) <- bbx$names
names(times) <- bbx$names

rrAnalysisCVTest <- RRPlot(rdatacv,atThr = rrAnalysisTrain$thr_atP,
                     timetoEvent=times,
                     title="CV Test: Colon Cancer",
                     ysurvlim=c(0.00,1.0),
                     riskTimeInterval=timeinterval)

CV Test Performance

pander::pander(t(rrAnalysisCVTest$keyPoints),caption="Threshold values")
Threshold values
  @:0.614 @MAX_BACC @MAX_RR @SPE100 p(0.5)
Thr 0.6149 0.494 0.320 0.250 0.500
RR 1.6663 1.694 2.336 1.000 1.629
RR_LCI 1.4779 1.477 1.510 0.000 1.426
RR_UCI 1.8786 1.942 3.612 0.000 1.860
SEN 0.3206 0.605 0.964 1.000 0.567
SPE 0.8801 0.656 0.124 0.000 0.676
BACC 0.6004 0.631 0.544 0.500 0.622
NetBenefit 0.0658 0.137 0.279 0.337 0.124
pander::pander(t(rrAnalysisCVTest$OERatio$estimate),caption="O/E Ratio")
O/E Ratio
O/E Low Upper p.value
0.546 0.496 0.599 1.14e-45
pander::pander(t(rrAnalysisCVTest$OE95ci),caption="O/E Mean")
O/E Mean
mean 50% 2.5% 97.5%
0.908 0.908 0.894 0.922
pander::pander(t(rrAnalysisCVTest$OAcum95ci),caption="O/Acum Mean")
O/Acum Mean
mean 50% 2.5% 97.5%
0.991 0.991 0.989 0.992
pander::pander(rrAnalysisCVTest$c.index$cstatCI,caption="C. Index")
mean.C Index median lower upper
0.646 0.647 0.621 0.672
pander::pander(t(rrAnalysisCVTest$ROCAnalysis$aucs),caption="ROC AUC")
ROC AUC
est lower upper
0.668 0.633 0.703
pander::pander((rrAnalysisCVTest$ROCAnalysis$sensitivity),caption="Sensitivity")
Sensitivity
est lower upper
0.321 0.278 0.366
pander::pander((rrAnalysisCVTest$ROCAnalysis$specificity),caption="Specificity")
Specificity
est lower upper
0.88 0.846 0.909
pander::pander(t(rrAnalysisCVTest$thr_atP),caption="Probability Thresholds")
Probability Thresholds
90%
0.614
pander::pander(rrAnalysisCVTest$surdif,caption="Logrank test")
Logrank test Chisq = 95.846284 on 1 degrees of freedom, p = 0.000000
  N Observed Expected (O-E)^2/E (O-E)^2/V
class=0 692 303 377.3 14.6 95.8
class=1 196 143 68.7 80.2 95.8